package com.hksj.cbm.entity;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hksj.cbm.vo.LargeScreenFileVO;
import com.hksj.common.core.model.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 空间模型表
 *
 * @author fjt、zengke
 * @email
 * @date 2024-07-12 17:30:41
 */
@Data
@TableName("hk_space_model")
public class SpaceModel extends BaseEntity implements Serializable {

    private static final long serialVersionUID = -5294923929783539209L;

    /**
     * 父节点id
     */
    @ApiModelProperty(value = "父节点id")
    private Long parentId;

    /**
     * 当前节点所处层数
     */
    @ApiModelProperty(value = "当前节点所处层数")
    @TableField("`level`")
    private Integer level;

    /**
     * 模型名称
     */
    @ApiModelProperty(value = "模型名称")
    private String modelName;

    /**
     * 节点路径
     */
    @ApiModelProperty(value = "节点路径")
    private String paths;

    /**
     * 楼栋id
     */
    @ApiModelProperty(value = "楼栋id")
    private Long buildingId;

    /**
     * 楼栋名称
     */
    @ApiModelProperty(value = "楼栋名称")
    private String buildingName;

    /**
     * 楼层id
     */
    @ApiModelProperty(value = "楼层id")
    private Long floorId;

    /**
     * 楼层名称
     */
    @ApiModelProperty(value = "楼栋名称")
    private String floorName;

    /**
     * 房间id
     */
    @ApiModelProperty(value = "房间id")
    private Long roomId;

    /**
     * 房间名称
     */
    @ApiModelProperty(value = "房间名称")
    private String roomName;

    /**
     * 点位id
     */
    @ApiModelProperty(value = "点位id")
    private Long pointId;

    /**
     * 点位名称
     */
    @ApiModelProperty(value = "点位名称")
    private String pointName;

    /**
     * 模型空间明细id(字典明细id)
     */
    @ApiModelProperty(value = "模型空间明细id(字典明细id)")
    private String spaceItemId;

    /**
     * 模型空间明细值(字典明细value)
     */
    @ApiModelProperty(value = "模型空间明细值(字典明细value)")
    private String spaceItemValue;

    /**
     * 科室明细id(字典明细id)
     */
    @ApiModelProperty(value = "科室明细id(字典明细id)")
    private String departmentItemId;

    /**
     * 科室明细值(字典明细value)
     */
    @ApiModelProperty(value = "科室明细值(字典明细value)")
    private String departmentItemValue;

    /**
     * 片区明细id(字典明细id)
     */
    @ApiModelProperty(value = "片区明细id(字典明细id)")
    private String areaItemId;

    /**
     * 片区明细value(字典明细value)
     */
    @ApiModelProperty(value = "片区明细value(字典明细value)")
    private String areaItemValue;

    /**
     * 模型类别(1=主模型 2=模型素材)
     */
    @ApiModelProperty(value = "模型类别(1=主模型 2=模型素材)")
    private Integer modelCategory;

    /**
     * 显示类别(2.5D、3D)
     */
    @ApiModelProperty(value = "显示类别(1=2.5D、2=3D)")
    private Integer displayCategory;

    /**
     * 模型文件地址
     */
    @ApiModelProperty(value = "模型文件地址")
    @TableField(updateStrategy = FieldStrategy.NOT_NULL)
    private String modelFile;

    /**
     * 模型文件集合
     */
    @ApiModelProperty(value = "模型文件集合")
    @TableField(exist = false)
    private List<LargeScreenFileVO> fileList = new ArrayList<>();

    /**
     * 模型编码
     */
    @ApiModelProperty(value = "模型编码")
    private String modelCoding;

    /**
     * 模型位置
     */
    @ApiModelProperty(value = "模型位置(2.5D、3D的位置存储,以json形式保存)")
    @TableField(value = "model_location", updateStrategy = FieldStrategy.NOT_NULL)//不传该字段时不对其进行修改,若该字段不为空则按照前端传值来赋值
    private String modelLocation;

    /**
     * 模型排序(1,2,3,4,5)
     */
    @ApiModelProperty(value = "模型排序(1,2,3,4,5)")
    private String seq;

    /**
     * 是否启用(0=禁用 1=启用)
     */
    @ApiModelProperty(value = "是否启用(0=禁用 1=启用)")
    private Integer status;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 子节点
     */
    @ApiModelProperty(value = "子节点")
    @TableField(exist = false)
    private List<SpaceModel> children = new ArrayList<>();

}
